package com.doit.day01;

import java.sql.*;
import java.util.HashMap;

/**
 * 搞一个hashmap 作为一个缓存系统  ==》user_id 作为key value 就是name
 */
public class _01_缓存系统 {
    //创建一个hashmap来当缓存
    static HashMap<Integer, String> map = new HashMap<>();


    public static void main(String[] args) throws SQLException {
        //去mysql数据库里面查询
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
        for (int i = 0; i < 100; i++) {
            String name = getName(conn, i);
            System.out.println(name);
        }
    }

    public static String getName(Connection conn,int user_id) throws SQLException {
        String name = "";

        //判断一下，hashmap中有没有这个id对应的name
        name = map.get(user_id);
        //如果是null，代表缓存系统中没有这个id，需要查询mysql数据库
        if (name != null){
            return name;
        }else {
            //sql的预编译
            PreparedStatement pps = conn.prepareStatement("select name from user_info where user_id = ?");
            //给？进行赋值
            pps.setInt(1,1);
            //执行sql
            ResultSet resultSet = pps.executeQuery();
            while (resultSet.next()){
                name = resultSet.getString(1);
                //如果查询了数据库，代表缓存中没有，就需要将结果添加到缓存里面，便于下次查询
                map.put(user_id,name);
            }
            return name;
        }
    }



}
